The storage of electronic data has become such an important and vital aspect of business and personal life that even brief interruptions to the accessibility of this data may have a profound impact. For example, a business may store records and customer data in electronic format to facilitate the transfer of the data between employees and locations of the business, but in the event of corruption of this data, the very performance of the business itself may halt. Even brief instances of such unavailability may have a great cost when multiplied across the number of users.
To provide for persistent and reliable access to electronic data, a variety of mechanisms and methods have been employed. Once such method is the use of a redundant array of inexpensive disks (RAID). Depending on the RAID protocol used, data may be provided from across the array in a redundant and efficient manner. However, the storage and retrieval of data may be time and resource intensive, the problems with which are only magnified as the number of users and amount of data increases. Therefore, improvements in the efficiency with which such data may be manipulated greatly increase the usability of the system and the resultant desirability of the systems to consumers.
Caches have been provided in conjunction with storage controllers to increase the efficiency of the controller when receiving and sending data to a host, as well as obtaining and writing data to a storage device. However, there is a need to effectively balance the size of storage controller cache blocks and the amount of data transferred in anticipation of requests, such as requests by a host.
Therefore, it would be desirable to provide a system, method and apparatus for providing and utilizing a storage cache descriptor by a storage controller.